#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTexCoord; // 纹理坐标属性

uniform mat4 ViewMatrix;//传入视图矩阵
uniform mat4 ModelMatrix;//传入模型矩阵
uniform mat4 ProjectionMatrix;

uniform mat4 waterMVP;
uniform float time; // 时间变量用于动画

out vec2 TexCoord; // 传递到片段着色器的纹理坐标
out vec3 ReflectDir; // 反射方向

void main() {
    //aPos.y = 0.5f;
    vec3 pos = aPos;
    pos.y += sin(pos.x * 3 + time) * 0.1; // 水波动画
    pos.y += sin(pos.z * 3 + time) * 0.1; // 水波动画
    pos.y += 0.5f;

    vec4 worldPosition = ModelMatrix * vec4(pos, 1.0);
    vec3 normal = vec3(0.0, 1.0, 0.0); // 水面法线，假设水面是平的
    vec3 I = normalize(worldPosition.xyz - (inverse(ViewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz);
    ReflectDir = reflect(I, normal);
    
    gl_Position = waterMVP * vec4(pos, 1.0);

    TexCoord = aTexCoord; // 传递纹理坐标
}



